package cn.tedu._04mybatis.mapper;

import cn.tedu._04mybatis.pojo.entity.Weibo;
import cn.tedu._04mybatis.pojo.vo.WeiboCommentVO;
import cn.tedu._04mybatis.pojo.vo.WeiboDetailVO;
import cn.tedu._04mybatis.pojo.vo.WeiboIndexVO;
import cn.tedu._04mybatis.pojo.vo.WeiboVO1;
import org.apache.ibatis.annotations.*;

import java.util.ArrayList;
import java.util.List;

@Mapper
public interface WeiboMapper {
    /**
     * 功能:发布微博,在微博表中插入一条数据
     * 注意:增删改返回值均为int类型,表示受影响的数据条数
     */
//    @Insert("INSERT INTO weibo(content, created, user_id) VALUES (#{content},#{created},#{userId})")
    int insertWeibo(Weibo weibo);

    /**
     * 功能:删除微博,在微博表中删除一条数据
     */
//    @Delete("DELETE FROM weibo WHERE id = #{id}")
    int deleteById(int id);

    /**
     * 功能:修改微博,在微博表中修改一条数据
     */
//    @Update("UPDATE weibo SET content=#{content},created=#{created},user_id=#{userId} WHERE id=#{id}")
    int updateWeiboById(Weibo weibo);

    /**
     * 功能:查询
     *  单条数据全字段查询
     *      根据微博的id,查询该条微博的所有信息
     * 注意:如果字段名和属性名不一致,则查询时使用别名
     */
//    @Select("SELECT id,content,created,user_id userId FROM weibo WHERE id=#{id}")
    Weibo selectById(int id);
    /**
     * 多条数据全字段查询
     *      查询指定用户[用户id]发的所有的微博信息
     */
//    @Select("SELECT id,content,created,user_id userId FROM weibo WHERE user_id=#{uid}")
    List<Weibo> selectByUid(int uid);
    /**
     * 单条数据部分字段查询
     *      根据微博的id查询该条微博的内容:内容和发布时间
     */
//    @Select("SELECT content,created FROM weibo WHERE id=#{id}")
    WeiboVO1 selectByWid(int id);

    /**
     * 动态修改
     * 根据微博id,修改微博的相关信息
     */
    int dynamicUpdate(Weibo weibo);

    /**
     * 动态删除1:数组格式
     * 根据微博ID删除对应的微博记录
     */
    int dynamicDelete1(Integer[] ids);

    /**
     * 动态删除2:List格式
     * 根据微博ID删除对应的微博记录
     */
    int dynamicDelete2(ArrayList<Integer> ids);

    /**
     * 统计微博表中数据的条数
     */
    int selectCount();

    /**
     * 微博首页列表展示
     */
    List<WeiboIndexVO> selectIndex();

    /**
     * 微博详情页
     */
    WeiboDetailVO selectWeiboDetail(int wid);

    /**
     * 评论详情页
     */
    List<WeiboCommentVO> selectComment(int wid);
}
